home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / a_utils / perl / msds-prl / ptchds19.zoo / msdos_c < prev    next >
Text File  |  1992-02-23  |  5KB  |  246 lines

  1. MS-DOS patches to perl.
  2. Apply this patch to the standard perl source, version 4, patch level 19,
  3. using "patch -p."  Do this in the root directory of the perl source
  4. distribution.
  5.  
  6. You can cat all these patches together and pipe the output to patch -p.
  7.  
  8. Len Reed
  9. Holos Software, Inc.
  10. ..!gatech!holos0!lbr
  11. holos0!lbr@gatech.edu
  12. --------------------------------------
  13. *** msdos/msdos.c.old    Fri Jun 14 20:09:56 1991
  14. --- msdos/msdos.c    Thu Nov 14 08:56:36 1991
  15. ***************
  16. *** 1,17 ****
  17. ! /* $RCSfile: msdos.c,v $$Revision: 4.0.1.1 $$Date: 91/06/07 11:22:37 $
  18.    *
  19.    *    (C) Copyright 1989, 1990 Diomidis Spinellis.
  20.    *
  21. !  *    You may distribute under the terms of either the GNU General Public
  22. !  *    License or the Artistic License, as specified in the README file.
  23.    *
  24.    * $Log:    msdos.c,v $
  25. -  * Revision 4.0.1.1  91/06/07  11:22:37  lwall
  26. -  * patch4: new copyright notice
  27. -  * 
  28. -  * Revision 4.0  91/03/20  01:34:46  lwall
  29. -  * 4.0 baseline.
  30. -  * 
  31.    * Revision 3.0.1.1  90/03/27  16:10:41  lwall
  32.    * patch16: MSDOS support
  33.    * 
  34. --- 1,13 ----
  35. ! /* $Header: msdos.c,v 3.0.1.1 90/03/27 16:10:41 lwall Locked $
  36.    *
  37.    *    (C) Copyright 1989, 1990 Diomidis Spinellis.
  38. +  *    (C) Copyright 1989, 1990 Tom Dinger
  39. +  *    (C) Copyright 1990 Leonard Reed
  40.    *
  41. !  *    You may distribute under the terms of the GNU General Public License
  42. !  *    as specified in the README file that comes with the perl 3.0 kit.
  43.    *
  44.    * $Log:    msdos.c,v $
  45.    * Revision 3.0.1.1  90/03/27  16:10:41  lwall
  46.    * patch16: MSDOS support
  47.    * 
  48. ***************
  49. *** 24,35 ****
  50.    * Various Unix compatibility functions for MS-DOS.
  51.    */
  52.   
  53. ! #include "EXTERN.h"
  54. ! #include "perl.h"
  55.   #include <dos.h>
  56.   #include <process.h>
  57.   
  58.   /*
  59.    * Interface to the MS-DOS ioctl system call.
  60.    * The function is encoded as follows:
  61. --- 20,34 ----
  62.    * Various Unix compatibility functions for MS-DOS.
  63.    */
  64.   
  65. ! #include <stdio.h>
  66. ! #include <errno.h>
  67.   #include <dos.h>
  68. + #include <time.h>
  69.   #include <process.h>
  70.   
  71. + #include "EXTERN.h"
  72. + #include "perl.h"
  73.   /*
  74.    * Interface to the MS-DOS ioctl system call.
  75.    * The function is encoded as follows:
  76. ***************
  77. *** 61,67 ****
  78.       struct SREGS    segregs;
  79.   
  80.       srv.h.ah = 0x44;
  81. !     srv.h.al = (unsigned char)(function & 0x0F);
  82.       srv.x.bx = handle;
  83.       srv.x.cx = function >> 4;
  84.       segread(&segregs);
  85. --- 60,66 ----
  86.       struct SREGS    segregs;
  87.   
  88.       srv.h.ah = 0x44;
  89. !     srv.h.al = function & 0xf;
  90.       srv.x.bx = handle;
  91.       srv.x.cx = function >> 4;
  92.       segread(&segregs);
  93. ***************
  94. *** 138,143 ****
  95. --- 137,143 ----
  96.           ;
  97.   }
  98.   
  99.   /*
  100.    * Just pretend that everyone is a superuser
  101.    */
  102. ***************
  103. *** 146,170 ****
  104.   int
  105.   getuid(void)
  106.   {
  107. !     return ROOT_UID;
  108.   }
  109.   
  110.   int
  111.   geteuid(void)
  112.   {
  113. !     return ROOT_UID;
  114.   }
  115.   
  116.   int
  117.   getgid(void)
  118.   {
  119. !     return ROOT_GID;
  120.   }
  121.   
  122.   int
  123.   getegid(void)
  124.   {
  125. !     return ROOT_GID;
  126.   }
  127.   
  128.   int
  129. --- 146,170 ----
  130.   int
  131.   getuid(void)
  132.   {
  133. !     return 0;
  134.   }
  135.   
  136.   int
  137.   geteuid(void)
  138.   {
  139. !     return 0;
  140.   }
  141.   
  142.   int
  143.   getgid(void)
  144.   {
  145. !     return 0;
  146.   }
  147.   
  148.   int
  149.   getegid(void)
  150.   {
  151. !     return 0;
  152.   }
  153.   
  154.   int
  155. ***************
  156. *** 174,258 ****
  157.   int
  158.   setgid(int gid)
  159.   { return (gid==ROOT_GID?0:-1); }
  160. - /*
  161. -  * The following code is based on the do_exec and do_aexec functions
  162. -  * in file doio.c
  163. -  */
  164. - int
  165. - do_aspawn(really,arglast)
  166. - STR *really;
  167. - int *arglast;
  168. - {
  169. -     register STR **st = stack->ary_array;
  170. -     register int sp = arglast[1];
  171. -     register int items = arglast[2] - sp;
  172. -     register char **a;
  173. -     char **argv;
  174. -     char *tmps;
  175. -     int status;
  176. -     if (items) {
  177. -     New(1101,argv, items+1, char*);
  178. -     a = argv;
  179. -     for (st += ++sp; items > 0; items--,st++) {
  180. -         if (*st)
  181. -         *a++ = str_get(*st);
  182. -         else
  183. -         *a++ = "";
  184. -     }
  185. -     *a = Nullch;
  186. -     if (really && *(tmps = str_get(really)))
  187. -         status = spawnvp(P_WAIT,tmps,argv);
  188. -     else
  189. -         status = spawnvp(P_WAIT,argv[0],argv);
  190. -     Safefree(argv);
  191. -     }
  192. -     return status;
  193. - }
  194. - int
  195. - do_spawn(cmd)
  196. - char *cmd;
  197. - {
  198. -     register char **a;
  199. -     register char *s;
  200. -     char **argv;
  201. -     char flags[10];
  202. -     int status;
  203. -     char *shell, *cmd2;
  204. -     /* save an extra exec if possible */
  205. -     if ((shell = getenv("COMSPEC")) == 0)
  206. -     shell = "\\command.com";
  207. -     /* see if there are shell metacharacters in it */
  208. -     if (strchr(cmd, '>') || strchr(cmd, '<') || strchr(cmd, '|'))
  209. -       doshell:
  210. -         return spawnl(P_WAIT,shell,shell,"/c",cmd,(char*)0);
  211. -     New(1102,argv, strlen(cmd) / 2 + 2, char*);
  212. -     New(1103,cmd2, strlen(cmd) + 1, char);
  213. -     strcpy(cmd2, cmd);
  214. -     a = argv;
  215. -     for (s = cmd2; *s;) {
  216. -     while (*s && isspace(*s)) s++;
  217. -     if (*s)
  218. -         *(a++) = s;
  219. -     while (*s && !isspace(*s)) s++;
  220. -     if (*s)
  221. -         *s++ = '\0';
  222. -     }
  223. -     *a = Nullch;
  224. -     if (argv[0])
  225. -     if ((status = spawnvp(P_WAIT,argv[0],argv)) == -1) {
  226. -         Safefree(argv);
  227. -         Safefree(cmd2);
  228. -         goto doshell;
  229. -     }
  230. -     Safefree(cmd2);
  231. -     Safefree(argv);
  232. -     return status;
  233. - }
  234. --- 174,176 ----
  235.